Integrated circuits often contain memory controllers for interfacing with memory. In a typical system, an integrated circuit can be used to communicate with system memory. In particular, the integrated circuit includes a memory controller that serves as an interface between the integrated circuit and the system memory. The integrated circuit also includes processing modules configured to access system memory by sending memory access requests to the memory controller (i.e., the memory controller includes multiple ports each of which receives memory access requests from a respective processing module within the integrated circuit).
Conventional system memory can only be configured to fulfill a limited number of memory access requests within a given time period (i.e., bandwidth is limited by the speed at which the memory controller can fulfill received memory access requests). For example, a memory controller may receive 12 memory access requests but system memory may only be able to fulfill eight of these memory access requests within a given number of clock cycles.